﻿#pragma once
#include "zyCtrol.h"
#include "zyRes.hpp"
namespace DarkMoonUI {

	class zyStatusBar : public  zyCtrol
	{
	public:
		zyStatusBar();
		~zyStatusBar();
		static LRESULT WINAPI zyStatusBar_ChildWndProc(zyObject* obj, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, BOOL* bHandle);
		BOOL 创建(HWND 参数_父窗口, const std::wstring& 参数_标题 = L"", POINT 参数_位置 = POINT{ 0, 0 }, POINT 参数_尺寸 = POINT{ 60, 26 },
			int 参数_ID = 0, int 参数_窗口风格 = 0, int 参数_扩展风格 = 0);
		BOOL 创建(zyWindow& 参数_父窗口, const std::wstring& 参数_标题 = L"", POINT 参数_位置 = POINT{ 0, 0 }, POINT 参数_尺寸 = POINT{ 60, 26 },
			int 参数_ID = 0, int 参数_窗口风格 = 0, int 参数_扩展风格 = 0);
		int 加入栏目(const std::wstring& 参数_栏目文本, int 参数_宽度 = NULL, const std::wstring& 参数_动态提示文本 = NULL, zyIcon* 参数_图标 = nullptr);
		bool 清空() {
			std::vector<int> 局部_栏目宽度组(1);
			return sendMsg(SB_SETPARTS, 1, reinterpret_cast<LPARAM>(&局部_栏目宽度组[0])) != 0;
		};
		bool 删除栏目(int 参数_栏目索引);
		bool 分割栏目(std::vector<int>& 参数_分割栏宽度);
		//@参数 返回的位置数组。每一个数组成员代表每一个栏目宽度
		int 取分割栏目(std::vector<int>& 参数_分割栏位置);
		int 取栏目数() { return (int)sendMsg(SB_GETPARTS, 0, 0); }
		RECT 取栏目矩形(int 参数_栏目索引);
		bool 置栏目文本(int 参数_栏目索引, const std::wstring& 参数_栏目文本 = L"");
		std::wstring 取栏目文本(int 参数_栏目索引 = 0);
		int 置背景色(int 参数_颜色值) { return (int)sendMsg(SB_SETBKCOLOR, 0, 参数_颜色值); }
		int 置栏目图标(int 参数_栏目索引, zyIcon& 参数_图标);
		zyIcon 取栏目图标(int 参数_栏目索引);
		//@参数 可空为第一个位置。位置从0开始
		//@参数 动态提示文本仅当栏目只有图片但没有内容文本或者内容文本不能被全部显示的情况下才有效。如果本参数被省略，默认值为空文本
		bool 置动态提示文本(int 参数_栏目索引, const std::wstring& 参数_提示文本 = L"");
		std::wstring 取动态提示文本(int 参数_栏目索引);
		bool 置简单模式(bool 参数_是否简单模式);
		//@备注 把此方法放在窗口尺寸被改变事件里
		void 自动大小() { sendMsg(WM_SIZE, 0, 0); }
		//@参数 有三个成员，第一个表示水平边界宽度；第二个表示垂直边界宽度；第三个表示边界矩形宽度
		bool 取边界(std::vector<int>& 参数_边界集);
		void 置最小高度(int 参数_最小高度) { sendMsg(SB_SETMINHEIGHT, 参数_最小高度, 0); }

		//@备注 函数 整型 OnSimpleModeChange(HWND hWnd)
		void 事件_简单模式被改变(TRegEvent* 参数_事件指针) { SetRegEvent(L"OnSimpleModeChange", 参数_事件指针); }
		//@备注 函数 整型 OnClick(HWND hWnd, 整型 栏目索引,整型 X,整型 Y)
		void 事件_被单击(TRegEvent* 参数_事件指针) { SetRegEvent(L"OnClick", 参数_事件指针); }
		//@备注 函数 整型 OnDBLClick(HWND hWnd, 整型 栏目索引,整型 X,整型 Y)
		void 事件_被双击(TRegEvent* 参数_事件指针) { SetRegEvent(L"OnDBLClick", 参数_事件指针); }
		//@备注 函数 整型 OnRClick(HWND hWnd, 整型 栏目索引,整型 X,整型 Y)
		void 事件_右键单击(TRegEvent* 参数_事件指针) { SetRegEvent(L"OnRClick", 参数_事件指针); }
	};

}

